A content addressable memory (CAM) may be designed so that it searches its entire memory to see if the supplied data is stored anywhere in it. If the data is found, the CAM may return the memory address where the data was found. Applications requiring high-speed searching may employ CAMs to store the data to be searched. For example, a firewall application may search a CAM to determine if a data packet (identified by source address, destination address, source port, and/or destination port, for example) should be forwarded or dropped. A billing application may search a CAM to increment a traffic counter to so that a user may be billed according to bandwidth use.